package com.hoshiicloud.saleorder.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

/**
 * <p>
 * 订单信息
 * </p>
 *
 * @author zhangshuhu
 * @since 2019-06-03
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@TableName("order_info")
public class OrderInfo extends Model<OrderInfo> {

    private Long id;

    /**
     * 租户id
     */
    private Long companyId;


    /**
     * 平台id
     */
    private Long platformId;


    /**
     * 店铺ID
     */
    private Long storeId;


    /**
     * 主单ID
     */
    private Long mainId;


    /**
     * 主单编号
     */
    private String mainNo;


    /**
     * 订单号
     */
    private String orderNo;


    /**
     * 会员ID
     */
    private Long memberId;


    /**
     * 发货单号，发货时填写，可在订单查询查看
     */
    private String invoiceNo;


    /**
     * 商家给客户的留言,当该字段有值时可以在订单查询看到
     */
    private String toBuyer;


    /**
     * 付款备注，在订单管理里编辑修改
     */
    private String payNote;


    /**
     * 商品总金额
     */
    private BigDecimal goodsAmount;


    /**
     * 配送费用
     */
    private BigDecimal shippingFee;


    /**
     * 保价费用
     */
    private BigDecimal insureFee;


    /**
     * 支付费用(,跟支付方式的配置相关，取值表payment)
     */
    private BigDecimal payFee;


    /**
     * 包装费用，取值表取值表pack
     */
    private BigDecimal packFee;


    /**
     * 发票税额
     */
    private BigDecimal tax;


    /**
     * 应付款金额
     */
    private BigDecimal orderAmount;


    /**
     * 订单实付金额
     */
    private BigDecimal amount;


    /**
     * 退款金额
     */
    private BigDecimal backAmount;


    /**
     * 金额金额
     */
    private BigDecimal coinsAmount;


    /**
     * 付款时间
     */
    private LocalDateTime paidTime;


    /**
     * 取消时间
     */
    private LocalDateTime cancelledTime;


    /**
     * 交付时间
     */
    private LocalDateTime deliveryTime;


    /**
     * 收货时间
     */
    private LocalDateTime receivedTime;


    /**
     * 提交时间
     */
    private LocalDateTime createdTime;


    /**
     * 制单人
     */
    private String createdBy;


    /**
     * 更新时间
     */
    private LocalDateTime updatedTime;


    /**
     * 更新人
     */
    private String updatedBy;


    /**
     * 优惠券金额（抵扣金额）
     */
    private BigDecimal benefitsAmount;


    /**
     * 余额抵扣金额
     */
    private BigDecimal balanceAmount;


    /**
     * 积分数
     */
    private Long points;


    /**
     * 是否删除
     */
    private Integer deleted;


    /**
     * 商品名称
     */
    private String spuName;


    /**
     * 规格
     */
    private String skuName;


    /**
     * spu no
     */
    private String spuNo;


    /**
     * spu id
     */
    private Long spuId;


    /**
     * sku id
     */
    private String skuNo;


    /**
     * sku no
     */
    private Long skuId;


    /**
     * 税率
     */
    private BigDecimal rate;


    /**
     * 税额
     */
    private BigDecimal rateAmount;


    /**
     * spu属性 json
     */
    private String spuExtendProp;


    /**
     * spu规格 json
     */
    private String spuExtendSpec;


    /**
     * sku属性 json
     */
    private String skuExtendProp;


    /**
     * 售价
     */
    private BigDecimal saleUnitPrice;


    /**
     * 单价(最终交易价)
     */
    private BigDecimal unitPrice;


    /**
     * 数量
     */
    private Long quantity;


    /**
     * 活动编号
     */
    private Long activityNo;


    /**
     * 是否自营
     */
    private Integer own;


    /**
     * 是否跨境
     */

    private Integer overseas;


    /**
     * 订单状态 0，未确认；1，已确认；2，已支付 3 分配中 4-已出货  5-已收货 6--售后 7-部分售后 8-已结算 <br>
     * <p>
     * 订单状态:
     * <p>0: 等待买家付款</p>
     * <p>1: 订单取消(超时未付款, 买家, 商家) 没有付钱订单取消</p>
     * <p>2: 清关中 (清关成功, 变为待发货)</p>
     * <p>3: 清关失败 三单/进口清单数据发送海关  三单 `运单支付单订单</p>
     * <p>4: 等待商家发货</p>
     * <p>5: 等待买家收货</p>
     * <p>6: 未提货</p>
     * <p>7: 未配送</p>
     * <p>8: 配送中</p>
     * <p>9: 退款成功</p>
     * <p>10: 已收货</p>
     * <p>11: 已提货</p>
     */
    private Integer orderStatus;


    /**
     * 商品配送情况 0，未发货；1，已发货 2-部分发货   3，已收货；4 部分收货 5 ，备货中
     */
    private Integer shippingStatus;


    /**
     * 支付状态 0-未支付 1-已支付 2-已退款 3-部分退款
     */
    private Integer payStatus;


    /**
     * 售后状态  0: 无需售后 1: 可以售后 2:售后中 3: 售后完成 4: 售后关闭
     */
    private Integer serviceStatus;


    /**
     * 退款状态  0-无需退款 1-未退款 2-已部分退款 3-已全额退款
     */
    private Integer refundStatus;

    /**
     * 退货状态  0-无需退货 1-未退货 2-已部分退货 3-已全部退货
     */
    private Integer returnGoodsStatus;

    /**
     * 售后订单参考
     */
    private String serviceRefNo;

    /**
     * 支付订单id-引用payorder表主键
     */
    private Long payOrderId;

    /**
     * 是否归档 1 已归档 0 未归档
     */
    private Integer archived;
}
